import os
import xml.etree.ElementTree as ET

def remove_newlines_in_names(folder_path):
    """
    功能：遍历指定文件夹中的所有XML文件，并删除<name>标签中的换行符。

    参数:
    folder_path -- 包含XML文件的文件夹路径
    """
    # 确保文件夹路径存在
    if not os.path.isdir(folder_path):
        print(f"The specified folder does not exist: {folder_path}")
        return

    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        # 检查文件扩展名是否为.xml
        if filename.lower().endswith('.xml'):
            # 构造完整的文件路径
            file_path = os.path.join(folder_path, filename)
            # 解析XML文件
            tree = ET.parse(file_path)
            root = tree.getroot()

            # 遍历所有的<object>标签
            for obj in root.findall('object'):
                # 修改<name>标签的内容，删除换行符
                name_tag = obj.find('name')
                if name_tag is not None:
                    name_tag.text = name_tag.text.replace('\n', '')

            # 保存修改后的XML文件
            tree.write(file_path, encoding='utf-8', xml_declaration=True)
            print(f"Updated: {filename}")

# 指定要处理的文件夹路径
folder_path = 'VOCdevkit/VOC2007/Annotations'  # 请替换为您的XML文件所在的文件夹路径
remove_newlines_in_names(folder_path)